from wtforms import Form, StringField, IntegerField, PasswordField
from wtforms.validators import length, NumberRange, DataRequired, Length, Email,ValidationError

from app.modes.uesr import User


class RegisterForm(Form):
    email = StringField('电子邮件', validators=[DataRequired(), Length(8, 64),
                                            Email(message='电子邮箱不符合规范')])
    nickname = StringField('昵称', validators=[
        DataRequired(), Length(2, 10, message='昵称至少需要两个字符，最多10个字符')])

    password = PasswordField('密码', validators=[
        DataRequired(message='密码不能为空，请输入密码'), Length(6, 32)])

    #自定义验证器 validate_  加上 要验证的属性
    def validate_email(self,field):
        # 查询数据库是否存在这个邮箱账号
        if User.query.filter_by(email=field.data).first():
            raise ValidationError('电子邮件已经被注册')
    def validate_nickname(self,field):
        # 查询数据库是否存在这个昵称
        if User.query.filter_by(nickname=field.data).first():
            raise ValidationError('昵称已存在')

class LoginFrom(Form):
    email = StringField('电子邮件', validators=[DataRequired(), Length(8, 64),
                                            Email(message='电子邮箱不符合规范')])
    password = PasswordField('密码', validators=[
        DataRequired(message='密码不能为空，请输入密码'), Length(6, 32)])